package com.juzi.staticdesignpattern;

public class Introduce {
    public static void main(String[] args) {
        System.out.println("================================\n" +
                "什么是设计模式（Design pattern）\n" +
                "开发中经常遇到一些问题，一个问题通常有n种解法的，但其中肯定有一种解法是最优的，这个最优的解法被人总结出来了，称之为设计模式。\n" +
                "设计模式有20多种，对应20多种软件开发中会遇到的问题。\n" +
                "学设计模式主要是学2点：\n" +
                "第一：这种模式用来解决什么问题。\n" +
                "第二：遇到这种问题了，该模式是怎么写的，他是如何解决这个问题的。\n" +
                "---------------------------------------\n" +
                "单例模式\n" +
                "可以保证系统中，应用该模式的这个类永远只有一个实例，即一个类永远只能创建一个对象。\n" +
                "例如任务管理器对象我们只需要一个就可以解决问题了，这样可以节省内存空间。\n" +
                "---------------------------------------\n" +
                "单例的实现方式很多\n" +
                "饿汉单例模式。\n" +
                "懒汉单例模式。\n" +
                "…\n" +
                "…\n" +
                "---------------------------------------\n" +
                "饿汉单例设计模式\n" +
                "在用类获取对象的时候，对象已经提前为你创建好了。\n" +
                "\n" +
                "设计步骤：\n" +
                "定义一个类，把构造器私有。\n" +
                "定义一个静态变量存储一个对象。\n" +
                "\n" +
                "\n" +
                "/** a、定义一个单例类 */\n" +
                "public class SingleInstance {\n" +
                "    /** c.定义一个静态变量存储一个对象即可 :属于类，与类一起加载一次 */\n" +
                "    public static SingleInstance instance = new SingleInstance ();\n" +
                "\n" +
                "    /** b.单例必须私有构造器*/\n" +
                "    private SingleInstance (){\n" +
                "        System.out.println(\"创建了一个对象\");\n" +
                "    }\n" +
                "}\n" +
                "---------------------------------------\n" +
                "饿汉单例的实现步骤?\n" +
                "定义一个类，把构造器私有。\n" +
                "定义一个静态变量存储一个对象\n" +
                "\n" +
                "---------------------------------------\n" +
                "懒汉单例设计模式\n" +
                "在真正需要该对象的时候，才去创建一个对象(延迟加载对象)。\n" +
                "\n" +
                "设计步骤：\n" +
                "定义一个类，把构造器私有。\n" +
                "定义一个静态变量存储一个对象。\n" +
                "提供一个返回单例对象的方法\n" +
                "\n" +
                "\n" +
                "/** 定义一个单例类 */\n" +
                "class SingleInstance{\n" +
                "    /** 定义一个静态变量存储一个对象即可 :属于类，与类一起加载一次 */\u000B    public static SingleInstance instance ; // null\n" +
                "\n" +
                "    /** 单例必须私有构造器*/\n" +
                "    private SingleInstance(){}\n" +
                "\n" +
                "    /** 必须提供一个方法返回一个单例对象  */\n" +
                "    public static SingleInstance getInstance(){\n" +
                "        ...\n" +
                "        return ...;\n" +
                "    }\n" +
                "}\n" +
                "---------------------------------------\n" +
                "懒汉单例的实现步骤?\n" +
                "定义一个类，把构造器私有。\n" +
                "定义一个静态变量存储一个对象。\n" +
                "提供一个返回单例对象的方法\n" +
                "\n" +
                "");
    }
}
